home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc / OpenDoc Development / Debugging Support / OpenDoc Source Code / Storage / SUCursor.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-22  |  5.3 KB  |  182 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SUCursor.cpp
  3.  
  4.     Contains:    xxx put contents here xxx
  5.  
  6.     Owned by:    xxx put writers here xxx
  7.  
  8.     Copyright:    © 1994 - 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <7>     10/8/95    TJ        Fixes Recomended by Refball
  13.          <6>     8/21/95    VL        1278330, 1278315: Error code cleanup.
  14.          <5>      8/3/95    RR        #1257260: Collapse B classes. Remove
  15.                                     somInit methods. Don't call IsInitialized
  16.                                     or SubclassResponsibility
  17.          <4>     6/16/95    VL        1259613: SUCursor can be created for
  18.                                     unfocused SU.
  19.          <3>     5/26/95    VL        1251403: Multithreading naming support.
  20.          <2>      1/9/95    VL        1183661: Added setters and getters.
  21.          <1>     6/28/94    VL        first checked in
  22.  
  23.     To Do:
  24. */
  25.  
  26. #define ODStorageUnitCursor_Class_Source
  27. #define VARIABLE_MACROS
  28. #include <SUCursor.xih>
  29.  
  30. #ifndef _ISOSTR_
  31. #include "ISOStr.h"
  32. #endif
  33.  
  34. #ifndef _EXCEPT_
  35. #include "Except.h"
  36. #endif
  37.  
  38. #ifndef _ODMEMORY_
  39. #include "ODMemory.h"
  40. #endif
  41.  
  42. #pragma segment SUCursor
  43.  
  44. SOM_Scope void  SOMLINK ODStorageUnitCursorInitStorageUnitCursor(ODStorageUnitCursor *somSelf, Environment *ev,
  45.         ODPropertyName propertyName,
  46.         ODValueType valueType,
  47.         ODValueIndex valueIndex)
  48. {
  49.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  50.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorInitStorageUnitCursor");
  51.     
  52.     SOM_TRY
  53.  
  54.     /* Moved from somInit. SOM itself sets fields to zero
  55.     _fCurProperty = kODNULL;
  56.     _fCurValueType = kODNULL;
  57.     _fCurValue = 0;
  58.     */
  59.  
  60.     if (propertyName != kODNULL) {    
  61.         _fCurProperty = (ODPropertyName) ODNewPtr(ODISOStrLength(propertyName) + 1);
  62.         ODISOStrCopy(_fCurProperty, propertyName);
  63.     }
  64.     else if ((valueType != kODNULL) || (valueIndex != 0))
  65.         THROW(kODErrInsufficientInfoInParams);
  66.  
  67.     if (valueType != kODNULL) {
  68.         _fCurValueType = (ODValueType) ODNewPtr(ODISOStrLength(valueType) + 1, ODGetDefaultHeap());
  69.         ODISOStrCopy(_fCurValueType, valueType);
  70.     }
  71.     
  72.     _fCurValue = valueIndex;
  73.     
  74.     SOM_CATCH_ALL
  75.     SOM_ENDTRY
  76. }
  77.  
  78. SOM_Scope void  SOMLINK ODStorageUnitCursorSetProperty(ODStorageUnitCursor *somSelf, Environment *ev,
  79.         ODPropertyName propertyName)
  80. {
  81.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  82.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorSetCursor");
  83.  
  84.     ODDisposePtr(_fCurProperty);
  85.         
  86.     if (propertyName == kODNULL)
  87.         _fCurProperty = kODNULL;
  88.     else {
  89.         SOM_TRY
  90.         _fCurProperty = (ODPropertyName) ODNewPtr(ODISOStrLength(propertyName) + 1, ODGetDefaultHeap());
  91.         ODISOStrCopy(_fCurProperty, propertyName);
  92.         SOM_CATCH_ALL
  93.         SOM_ENDTRY
  94.     }
  95. }
  96.  
  97. SOM_Scope void  SOMLINK ODStorageUnitCursorSetValueType(ODStorageUnitCursor *somSelf, Environment *ev,
  98.         ODValueType valueType)
  99. {
  100.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  101.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorSetValueType");
  102.  
  103.     ODDisposePtr(_fCurValueType);
  104.  
  105.     if (valueType != kODNULL) {
  106.         SOM_TRY
  107.         _fCurValueType = (ODValueType) ODNewPtr(ODISOStrLength(valueType) + 1, ODGetDefaultHeap());
  108.         ODISOStrCopy(_fCurValueType, valueType);
  109.         SOM_CATCH_ALL
  110.         SOM_ENDTRY
  111.     }
  112.     else {
  113.         _fCurValueType = kODNULL;
  114.     }
  115. }
  116.  
  117. SOM_Scope void  SOMLINK ODStorageUnitCursorSetValueIndex(ODStorageUnitCursor *somSelf, Environment *ev,
  118.         ODValueIndex valueIndex)
  119. {
  120.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  121.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorSetValueIndex");
  122.  
  123.     _fCurValue = valueIndex;
  124. }
  125.  
  126. SOM_Scope void  SOMLINK ODStorageUnitCursorGetProperty(ODStorageUnitCursor *somSelf, Environment *ev,
  127.         ODPropertyName* propertyName)
  128. {
  129.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  130.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorGetProperty");
  131.  
  132.     if (_fCurProperty == kODNULL) {
  133.         *propertyName = kODNULL;
  134.     }
  135.     else {
  136.         SOM_TRY
  137.         *propertyName = (ODPropertyName) ODNewPtr(ODISOStrLength(_fCurProperty) + 1, ODGetDefaultHeap());
  138.         ODISOStrCopy(*propertyName, _fCurProperty);
  139.         SOM_CATCH_ALL
  140.         SOM_ENDTRY
  141.     }
  142. }
  143.  
  144. SOM_Scope void  SOMLINK ODStorageUnitCursorGetValueType(ODStorageUnitCursor *somSelf, Environment *ev,
  145.         ODValueType* valueType)
  146. {
  147.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  148.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorGetValueType");
  149.  
  150.     if (_fCurValueType == kODNULL)
  151.         *valueType = kODNULL;
  152.     else {
  153.         SOM_TRY
  154.         *valueType = (ODValueType) ODNewPtr(ODISOStrLength(_fCurValueType) + 1, ODGetDefaultHeap());
  155.         ODISOStrCopy(*valueType, _fCurValueType);
  156.         SOM_CATCH_ALL
  157.         SOM_ENDTRY
  158.     }
  159. }
  160.  
  161. SOM_Scope void  SOMLINK ODStorageUnitCursorGetValueIndex(ODStorageUnitCursor *somSelf, Environment *ev,
  162.         ODValueIndex* valueIndex)
  163. {
  164.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  165.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorGetValueIndex");
  166.  
  167.     *valueIndex = _fCurValue;
  168. }
  169.  
  170. SOM_Scope void  SOMLINK ODStorageUnitCursorsomUninit(ODStorageUnitCursor *somSelf)
  171. {
  172.     ODStorageUnitCursorData *somThis = ODStorageUnitCursorGetData(somSelf);
  173.     ODStorageUnitCursorMethodDebug("ODStorageUnitCursor","ODStorageUnitCursorsomUninit");
  174.  
  175.     if (_fCurProperty != kODNULL)
  176.         ODDisposePtr((ODPtr) _fCurProperty);
  177.     if (_fCurValueType != kODNULL)
  178.         ODDisposePtr((ODPtr) _fCurValueType);
  179.  
  180.     ODStorageUnitCursor_parent_ODObject_somUninit(somSelf);
  181. }
  182.